package com.tianqu.tms.entity;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import com.tianqu.tms.core.exception.TmsDaoException;
import com.tianqu.tms.core.util.StringUtil;
import com.tianqu.tms.dao.AucManagerDao;
import com.tianqu.tms.dao.TmsDao;
import com.tianqu.tms.dao.ViewListDao;
import com.tianqu.tms.dto.AucManagerDto;

public class AucManagement extends ViewListManager {
	private static final long serialVersionUID = 1L;
	private int id;
	private String serial;
	private int finalExpetPrices;
	private String memberId;
// 竞价管理修正 Start
	private int donePrices;
	private String doneMemberId;
	private int expetPricesNum;
// 竞价管理修正 End
	private Timestamp startTime;
	private Timestamp endTime;
	private int auctionDeadline;
	private int bidType;
	private int bidStatus;
	private Timestamp updateTime;
	private int updateUserId;
	private Timestamp insertTime;
	private int countdown;// 倒计时
// 竞价管理修正 Start
	private int cssFlag;
// 竞价管理修正 End

	public static AucManagement getInstance() {
		AucManagement auc = new AucManagement();
		auc.setExisting(false);
		return auc;
	}

	/**
	 * 插入车辆竞价信息
	 * 
	 * @param entity
	 * @throws TmsDaoException
	 */
	public void insertAucMeager(AucManagement entity) throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);
		dao.insertAucManger(getAucManagement(entity));
	}

	// 竞价管理修正 Start
	/**
	 * 数据转换
	 * 
	 * @param entity
	 * @return
	 */
	public AucManagerDto getAucManagement(AucManagement entity) {
		AucManagerDto dto = new AucManagerDto();
		dto.setId(entity.getId());
		dto.setSerial(entity.getSerial());
		dto.setStartTime(entity.getStartTime());
		dto.setAuctionDeadline(entity.getAuctionDeadline());
		dto.setBidType(entity.getBidType());
		dto.setBidStatus(entity.getBidStatus());
		dto.setCssFlag(entity.getCssFlag());
		return dto;
	}
	// 竞价管理修正 End

	public Timestamp getEndTime() {
		return endTime;
	}

	public void setEndTime(Timestamp endTime) {
		this.endTime = endTime;
	}

	/**
	 * 
	 * 根据状态查询竞价车辆信息
	 * 
	 * @throws TmsDaoException
	 */
	public List<AucManagement> getAucInfoByStatus(int status)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);

		List<AucManagerDto> dtoList = dao.findAucManageInfoByStatus(status);
		List<AucManagement> entityList = new ArrayList<AucManagement>();

		if (dtoList != null) {
			for (int i = 0; i < dtoList.size(); i++) {
				AucManagerDto dto = dtoList.get(i);
				// 将Dto数据set到entity中
				AucManagement entity = new AucManagement();
				entity = setEntityFronDto(entity, dto);
				entityList.add(entity);
			}
		}

		return entityList;
	}

	/**
	 * 将dto数据set到entity中
	 * 
	 * @param entity
	 * @return
	 */
	public AucManagement setEntityFronDto(AucManagement entity,
			AucManagerDto dto) {

		entity.setId(dto.getId());
		entity.setSerial(dto.getSerial());
// 竞价管理修正 Start
		entity.setDonePrices(dto.getDonePrices());
		entity.setDoneMemberId(dto.getDoneMemberId());
		entity.setMemberId(dto.getMemberId());
		entity.setExpetPricesNum(dto.getExpetPricesNum());
		if (StringUtil.isNullOrBlank(dto.getFinalExpetPrices())) {
			entity.setFinalExpetPrices(0);
		} else {
			entity.setFinalExpetPrices(Integer.parseInt(dto.getFinalExpetPrices()));
		}
// 竞价管理修正 End
		entity.setStartTime(dto.getStartTime());
		entity.setEndTime(dto.getEndTime());
		entity.setAuctionDeadline(dto.getAuctionDeadline());
		entity.setBidType(dto.getBidType());
		entity.setBidStatus(dto.getBidStatus());
		entity.setUpdateUserId(dto.getUpdateUserId());

		return entity;
	}

	/**
	 * 根据时间段查询竞价车辆信息 时间ID
	 * 
	 * @throws TmsDaoException
	 * 
	 */
	public List<AucManagement> getAucInfoByPeriod(Timestamp startTime)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);

		List<AucManagerDto> dtoList = dao.findAucInfoByPeriod(startTime);

	

		List<AucManagement> entityList = new ArrayList<AucManagement>();

		if (dtoList != null) {
			for (int i = 0; i < dtoList.size(); i++) {
				AucManagerDto dto = dtoList.get(i);
				AucManagement entity = new AucManagement();
				// 将Dto数据set到entity中
				entity = setEntityFronDto(entity, dto);
				entityList.add(entity);
			}
		}

		return entityList;
	}

	/**
	 * 即时拍待竞价tab信息查询
	 * 
	 * 条件：状态：1 开始时间 结束时间
	 * 
	 * @throws TmsDaoException
	 * 
	 */
	public List<AucManagement> findAucInfoByStatus(int status)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);

		List<AucManagerDto> dtoList = dao.findAucInfoByStatus(status);

		AucManagement entity = null;

		List<AucManagement> entityList = new ArrayList<AucManagement>();

		if (dtoList != null) {
			for (int i = 0; i < dtoList.size(); i++) {
				AucManagerDto dto = dtoList.get(i);
				// 将Dto数据set到entity中
				entity = new AucManagement();
				entity = setEntityFronDto(entity, dto);
				entityList.add(entity);
			}
		}

		return entityList;
	}

	/**
	 * 更新竞价状态
	 */
	public void updateBidStatus(int bidType, int  status ) throws TmsDaoException{
		AucManagerDao dao = (AucManagerDao) TmsDao.getInstance(TmsDao.TMS_AUC_MANAGEMENT);
		dao.updateBidStatus(bidType, status);
	}
	
	/**
	 * 
	 * 根据车辆ID查询车辆竞价信息
	 * 
	 * @throws TmsDaoException
	 */
	public AucManagement getAucInfoById(int id)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);

		AucManagerDto dto = dao.getAucInfoById(id);
		
		AucManagement entity = new AucManagement();

		if(dto!=null)
		{
			entity = setEntityFronDto(entity, dto);
		}
		

		return entity;
	}

	
	/**
	 * 
	 * 根据车辆ID查询车辆竞价信息所有信息
	 * 
	 * @throws TmsDaoException
	 */
	public AucManagement getAucInfoBySerialAll(int id)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);

		AucManagerDto dto = dao.getAucInfoBySerialAll(id);

		AucManagement entity = new AucManagement();
		entity=setEntityFronDto(entity, dto);
        if(entity!=null){
        	return entity;
        }
		return null;
	}

	/**
	 * 
	 * 根据车辆ID和会员ID查询我的竞价车辆竞价信息
	 * 
	 * @throws TmsDaoException
	 */
	public AucManagement getMyDealAucCarInfo(String serial, int memberId)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);

		AucManagerDto dto = dao.getMyDealAucCarInfo(serial, memberId);

		AucManagement entity = new AucManagement();

		return setEntityFronDto(entity, dto);
	}

	/**
	 * 更新竞价状态：下架处理
	 * 
	 * @param bidType
	 * @param Serial
	 * @throws TmsDaoException
	 */
	public void updateBidType(int bidType, int id)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);
		dao.updateBidType(bidType, id);

	}

	/**
	 * 更新竞价信息：重新参拍
	 * 
	 * @param bidType
	 * @param Serial
	 * @throws TmsDaoException
	 */
	public void updateAucManage(AucManagement entity) throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);
		dao.updateAucManager(getAucManagement(entity));

	}

	/**
	 * 获得竞价车辆所有list列表数量
	 * 
	 * @return
	 * @throws TmsDaoException
	 */
	public List<AucManagement> getAucManagementList() throws TmsDaoException {

		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);
		
		List<AucManagerDto> list = dao.getAucManagementList();
		List<AucManagement> Auclist = new ArrayList<AucManagement>();
		if (list == null || list.size() == 0)
			return null;

		for (AucManagerDto dto : list) {
			AucManagement auc = new AucManagement();
			auc.setId(dto.getId());
			auc.setSerial(dto.getSerial());
// 竞价管理修正 Start
			auc.setDonePrices(dto.getDonePrices());
			auc.setDoneMemberId(dto.getDoneMemberId());
			auc.setExpetPricesNum(dto.getExpetPricesNum());
			if (StringUtil.isNullOrBlank(dto.getFinalExpetPrices())) {
				auc.setFinalExpetPrices(0);
			} else {
				auc.setFinalExpetPrices(Integer.parseInt(dto.getFinalExpetPrices()));				
			}
// 竞价管理修正 End
			auc.setMemberId(dto.getMemberId());
			auc.setStartTime(dto.getStartTime());
			auc.setEndTime(dto.getEndTime());
			auc.setAuctionDeadline(dto.getAuctionDeadline());
			auc.setBidType(dto.getBidType());
			auc.setBidStatus(dto.getBidStatus());
			auc.setUpdateUserId(dto.getUpdateUserId());
// 竞价管理修正 Start
			auc.setCssFlag(dto.getCssFlag());
// 竞价管理修正 End
			Auclist.add(auc);

		}
		return Auclist;

	}

	/**
	 * 获得竞价车辆待竞价与竞价中列表数据
	 * 
	 * @return
	 * @throws TmsDaoException
	 */
	public List<AucManagement> getBiWeitList(String startTime, String endTime)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);
		List<AucManagerDto> list = dao.getBidWeitList(startTime, endTime);
		List<AucManagement> Auclist = new ArrayList<AucManagement>();
		if (list == null || list.size() == 0)
			return null;

		for (AucManagerDto dto : list) {
			AucManagement auc = new AucManagement();
			auc.setId(dto.getId());
			auc.setSerial(dto.getSerial());
			auc
					.setFinalExpetPrices(Integer.parseInt(dto
							.getFinalExpetPrices()));
			auc.setMemberId(dto.getMemberId());
			auc.setStartTime(dto.getStartTime());
			auc.setEndTime(dto.getEndTime());
			auc.setAuctionDeadline(dto.getAuctionDeadline());
			auc.setBidType(dto.getBidType());
			auc.setBidStatus(dto.getBidStatus());
			auc.setUpdateUserId(dto.getUpdateUserId());
			Auclist.add(auc);

		}
		return Auclist;

	}

	/**
	 * 
	 * 成交车辆信息
	 * 
	 * @param entity
	 * @return
	 * @throws TmsDaoException
	 */
	@SuppressWarnings("unchecked")
	public List getAllAucDealInfo(int memberId) throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao.getInstance(
				TmsDao.TMS_AUC_MANAGEMENT, getPageNo(), getMaxIndex(),
				getSortKey(), isAsc());
		ViewListDao idao = (ViewListDao) TmsDao.getViewListDao((TmsDao) dao,
				TmsDao.TMS_AUC_MANAGEMENT);

		List list = dao.getAllAucDealInfo(memberId);

		setPagingInfo(idao);
		return list;
	}

	public AucManagerDto entityToDto(AucManagement entity) {
		AucManagerDto dto = new AucManagerDto();
		dto.setSerial(entity.getSerial());
		dto.setStartTime(entity.getStartTime());
		dto.setBidStatus(4);
		dto.setUpdateUserId(entity.getUpdateUserId());
		return dto;
	}

	// 竞价管理修正 Start
	/**
	 * 
	 * 竞价结果更新
	 * 
	 * @return
	 * @throws TmsDaoException
	 */
	public void updateAucManageInfo(AucManagement entity)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);

		AucManagerDto dto = new AucManagerDto();

		dto.setBidStatus(entity.getBidStatus());
		dto.setDoneMemberId(entity.getDoneMemberId());
		dto.setDonePrices(entity.getDonePrices());
		dto.setId(entity.getId());
		// 更新
		dao.updateAucManageInfoById(dto);
	}
	// 竞价管理修正 End
	
	/**
	 * 倒计时结束 更新车辆状态
	 * 
	 * @return
	 * @throws TmsDaoException
	 */
	public void updateStatusToDeal(String serial, int bidStatus)
			throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);

		dao.upAucManageStatusBySerial(serial, bidStatus);
	}
    /**
     * 查看当前是否有待竞价、竞价中的车辆
     * @return
     * @throws TmsDaoException
     */
	public String getManaId(String serial)throws TmsDaoException{
		AucManagerDao dao = (AucManagerDao) TmsDao
		.getInstance(TmsDao.TMS_AUC_MANAGEMENT);
		return dao.getManaId(serial);
		
	}
	
	
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getSerial() {
		return serial;
	}

	public void setSerial(String serial) {
		this.serial = serial;
	}

	public int getFinalExpetPrices() {
		return finalExpetPrices;
	}

	public void setFinalExpetPrices(int finalExpetPrices) {
		this.finalExpetPrices = finalExpetPrices;
	}

	public String getMemberId() {
		return memberId;
	}

	public void setMemberId(String memberId) {
		this.memberId = memberId;
	}

// 竞价管理修正 Start
	public int getDonePrices() {
		return donePrices;
	}

	public void setDonePrices(int donePrices) {
		this.donePrices = donePrices;
	}

	public String getDoneMemberId() {
		return doneMemberId;
	}

	public void setDoneMemberId(String doneMemberId) {
		this.doneMemberId = doneMemberId;
	}
	
	public int getExpetPricesNum() {
		return expetPricesNum;
	}

	public void setExpetPricesNum(int expetPricesNum) {
		this.expetPricesNum = expetPricesNum;
	}
// 竞价管理修正 End
	
	public Timestamp getStartTime() {
		return startTime;
	}

	public void setStartTime(Timestamp startTime) {
		this.startTime = startTime;
	}

	public int getAuctionDeadline() {
		return auctionDeadline;
	}

	public void setAuctionDeadline(int auctionDeadline) {
		this.auctionDeadline = auctionDeadline;
	}

	public int getBidType() {
		return bidType;
	}

	public void setBidType(int bidType) {
		this.bidType = bidType;
	}

	public int getBidStatus() {
		return bidStatus;
	}

	public void setBidStatus(int bidStatus) {
		this.bidStatus = bidStatus;
	}

	public Timestamp getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Timestamp updateTime) {
		this.updateTime = updateTime;
	}

	public int getUpdateUserId() {
		return updateUserId;
	}

	public void setUpdateUserId(int updateUserId) {
		this.updateUserId = updateUserId;
	}

	public Timestamp getInsertTime() {
		return insertTime;
	}

	public void setInsertTime(Timestamp insertTime) {
		this.insertTime = insertTime;
	}

	public int getCountdown() {
		return countdown;
	}

	public void setCountdown(int countdown) {
		this.countdown = countdown;
	}

// 竞价管理修正 Start
	public int getCssFlag() {
		return cssFlag;
	}

	public void setCssFlag(int cssFlag) {
		this.cssFlag = cssFlag;
	}
	
	public int getManaMaxId() throws TmsDaoException {
		AucManagerDao dao = (AucManagerDao) TmsDao
				.getInstance(TmsDao.TMS_AUC_MANAGEMENT);

		return dao.getManaMaxId();
	}
// 竞价管理修正 End
}
